import { sysProfile, sysUser } from '@/api/user'
import { otherRoutes, constantRoutes, resetRouter } from '@/router/index'
import router from '@/router'
export default {
  namespaced: true,
  state: {
    // 持久化：1：值修改了存储到浏览器 2：初始值读取浏览器存储
    // vuex持久化插件 vuex-persistedstate
    // 1:下载安装  npm i vuex-persistedstate -f
    // 2:导入，在store/index.js导入  import persistedstate from 'vuex-persistedstate'
    // 3:配制使用  plugins:[persistedstate({paths:['模块名.字段名']})]
    // token: localStorage.getItem('token') || ''
    token: '',
    userInfo: {}
  },
  mutations: {
    setToken (state, value) {
      state.token = value
      // localStorage.setItem('token', value)
      // localStorage.setItem(key,value)
      // localStorage.getItem(key)
      // localStorage.removeItem(key)
    },
    setUserInfo (state, value) {
      state.userInfo = value
    },
    // 删除token与用户信息
    logout (state) {
      state.token = ''
      state.userInfo = {}
      resetRouter()
    }
  },
  getters: {},
  actions: {
    // 获取用户信息
    async getUserInfo (store) {
      const res = await sysProfile()
      const res2 = await sysUser(res.data.userId)
      store.commit('setUserInfo', { ...res.data, ...res2.data })
      console.log('权限点数据', res.data.roles.menus)
      // 将用户信息中的权限点数据与动态路由做匹配，将匹配后的数据添加到路由配制中
      // 用户信息权限点数据 ["employees","settings"]
      // 动态路由(otherRoutes)：[{meta:{code:'employees'}},{meta:{code:'settings'}},,{meta:{code:'approvals'}}]
      const newArr = otherRoutes.filter(item => {
        return res.data.roles.menus.includes(item.meta.code)
      })
      newArr.push({ path: '*', redirect: '/404', hidden: true })
      // 将匹配到的路由添加到路由配制中
      // router.addRoutes(需要添加的路由配制) 通过该方法做路由添加
      router.addRoutes(newArr)
      // this.$router.options.routes的值不会因为addRoutes添加而动态更新
      // 手动更新
      // router.options.routes.push(...newArr)
      router.options.routes = [...constantRoutes, ...newArr]
      console.log('匹配到的数组', newArr)
    }
  }
}
